Reason 並不是一個新的語言,而是一種新的語法和工具鍊(toolchain),Ocaml支援。並支援既有的 NPM/YARN。
藉由 BuckleScript將 Reason 編譯為可閱讀的 Javascript
100% 的覆蓋率,而且保有 Javascript 的型別推導,一但編譯過型別保證正確bsb 建置時間小於 100ms(遞增),產生的結果也會很小Reason 中貼上 Javascript 的程式片段再慢慢調整為 Reason 的程式碼immutable and functional 但是也提供 side-effect 和 mutation 的彈性Javascript code
當你完成一個簡單的 .re 檔案 (這是基本的 reason檔案)
會經由下圖的過程幫你編譯成 Javascript

  $ npm install -g reason-cli@latest-macos
  $ npm install -g bs-platform 
  $ bsb -init hello-world -theme  basic-reason
第一次初始化之後會得到這樣的檔案結構
.
├── README.md
├── bsconfig.json
├── node_modules
│   └── bs-platform -> /usr/local/lib/node_modules/bs-platform
├── package.json
└── src
    └── Demo.re
BuckleScript 的設定 json 檔案
{
  "name": "hello-world",
  "version": "0.1.0",
  "sources": {
    "dir" : "src",
    "subdirs" : true
  },
  "package-specs": {
    "module": "commonjs",
    "in-source": true
  },
  "suffix": ".bs.js",
  "bs-dependencies": [
      // add your dependencies here. You'd usually install them normally through `npm install my-dependency`. If my-dependency has a bsconfig.json too, then everything will work seamlessly.
  ],
  "warnings": {
    "error" : "+101"
  },
  "namespace": true,
  "refmt": 3
}
Util.re 的檔案,如果沒有開啟命名空間,你的第三方套件也有一個 Util 的套件,他們會造成衝突,,這個參數影響的是這個 lib 的使用者,而不是自己本身3
ReasonReact, 設定則為{
  "reason": {"react-jsx": 2},
  "refmt": 3
}
在你的專案中還隱藏了一個小小的檔案 .merlin
這個檔案雖然只有短短幾行
但是扮演相當重要的角色
他會協助你的 格式檢查, autocompleate...
  $ npm run start
然後會開始編譯

  $ node src/Demo.bs.js
  // Hello, BuckleScript and Reason!
Welcom Reason's World